В какой-то момент многие алго-трейдеры сходятся к неким «столпам» алго-трейдинга – принципам, которые работают. Когда ты до этих принципов дошел, придерживаться их безопасно, потому что ты не пускаешься в странные авантюры, странные направления исследований и прочее. Но все ли столпы алго-трейдинга так хороши.
Возьмём, казалось бы, незыблемый столп: стратегии нужно объединять в портфели стратегий, и чем менее скоррелированный стратегии в портфеле, тем лучше.
Дальше скорее рассуждения на тему, чем усомнение в, посмотрим как пойдёт)…
На чем основан постулат:
Набиваешь нескоррелированные стратегии в портфель -> /*какая-то математическая логика за этим эффектом*/ -> У такого портфеля метрики будут лучше, чем в среднем у участников портфеля. Ну например в форме: меньше просадка при одинаковой доходности. Берем выше плечо, получаем большую доходность при одинаковой просадке. Ну или используем это в соответствии со своим риск-аппетитом. Красота? – Красота. Так и работает на практике? – Так и работает на практике.
Т.е. сейчас даже не про просеивание, фильтрацию информации ручными трейдерами – ну там: в топку телеграм-каналы, горы индикаторов на графике, обзоры аналитиков и прочую фигню.
Сейчас про алгоритмических трейдеров.
У них тоже есть свой информационный шум. И свои стратегии взаимодействия с этим шумом.
Какой вообще есть шум и на что он влияет. Что нужно алго-трейдеру – идеи стратегий… да кого я обманываю, им не нужны идеи – им нужны в конечном счете стратегии. Второе что нужно – идея, решения по улучшению процессов, общей эффективности – т.е. мета-улучшения, ну там – чуть лучшие способы защиты от переподгонки, чуть более эффективные способы собирать стратегии в портфели и т.д. Дальше алго-трейдер берет информацию в оборот, обычно экспериментирует и дальше что-то внедряет если нашел что-то ценное.
И что может «шуметь» в охоте за данными кусками ценной информации?
Попробую обобщить, классифицировать:
— Нетематическая информация – зашел на условный Смарт-лаб, ожидая трейдерский контент, получил много политики, много ещё чего-то, что как алго-трейдеру тебе почти ничего не даёт (может где-то что-то дать, но соотношение шум/«сигнал» будет очень неблагоприятное).
Взяли в руки блокнотики?))
Грааль в ML для трейдинга состоит из нескольких компонентов. По сути грааль, это «правильные» ответы на вопросы:
Пожалуй, можно составить ТОП покороче:
Хотел пару слов сказать про метрики качества стратегий – всякого рода PF, winrate, RF, Sharp (надеюсь, на запах шарпа не прибегут любители шарпа). В части того, как я к ним отношусь и немного инсайтов.
Начну сразу с граалей инсайтов: осознал явно, что я сильно различаю метрики стратегии и метрики портфеля стратегий. Стратегия – кирпичик, портфель – дом, по-моему очень логично их оценивать по разным критериям. Ты хочешь белый дом? — Пофиг, что каждый из кирпичей красный, если всё равно поверх краска и дом будет белый.
Основное свойство хорошей стратегии в моей системе координат – фигачить, перформить, буквально вытаскивать деньги с рынка. Это свойство не прям настолько основное, чтоб я смотрел на total net profit тупо, но не далеко – я смотрю на PF как на основную меру качества отдельной стратегии. Также смотрю на winrate – как на страхующую меру – как отдельная мера она так себе, понятно, но зато она супер-нормализована, это в некоторых ситуациях очень помогает, также смотрю на average trade (в моей терминологии так звучит по крайней мере, другими словами сколько в процентах средний трейд) – это и про запас прочности и чтоб на какую-нить херню не наткнуться физически нереализуемую.
Имею в виду в моменте и автоматически.
Кто-то так вообще делает? Вот буквально, что у твоей стратегии не N денег в распоряжении, у второй N1, у третьей N2 и т.д., где N1 == N или N1 != N и т.д. А у тебя всего N денег в распоряжении и стратегии сами как-то разруливают эту историю. Без анархии, конечно, но как-то смарт и по-хитрому.
Сразу же возникло много вопросов по логике организации такой системы, подумал: надо сторонний опыт заценить и понял, что, вроде, ничего о подобном не слышал.
Ретроспективно — обычно «руками» заглянуть в историю — перераздать лимиты денег — да, как-то так делают.
Хочется как-то так: если стратегия, по ожиданиям, будет хорошо перформить и/или сигнал какой-то особо мощный — чтоб система могла перетянуть одеяло. Но в то же время надо чтоб кто-то один не перетягивал на себя всё одеяло, какой бы крутой он не был. В общем смарт челлендж вырисовывается, хочется для начала осмотреться по сторонам прежде чем что-то делать. Хотя по устоявшейся уже привычке точно не буду делать какого-то неповоротливого мастодонта, начну с простенького MVP.
Бэктесты на неликвидах.
А кто-то бэктестит на таком? Как исполнение организовано? Ещё бы конечно хотелось динамически исполнение подстраивать (речь всё ещё про бэктест) в зависимости от текущей оценки ликвидности, а не постфактум оценки какой-то.
Я на свечах тещщу всё.
У меня сейчас 2 вида исполнения в бэктестах – для ликвида и неликвида. Хочется более интеллектуально и адаптивно это делать. Может у кого-то опыт есть, какие-то лайфхаки.
Отличия в исполнении, например: если ты стоишь лимиткой под ценой, а потом раз и дневка открылась ниже цены заявки, в ликвиде – тебе дадут на аукционе по цене открытия, а в неликвиде это скорее всего просто прострел и дай бог чтобы ликвидности хватило в твою-то заявку налить… по цене заявки, ясно.
Можно смотреть на проторгованные объемы, но это надо как-то инфляцию учесть, а-то ж это в разы или может десятки раз разница стоимости денег будет в разные периоды.
Можно по свечам оценивать, например, для внутридня что-то типа отношение на скользящем окне среднего abs(close текущей – open следующей) к ATR. Типа если дохрена оупен новой свечи от клоуза предыдущей улетает часто – видимо спреды запредельные. Да, наверно, что-то такое можно, с доп. подстраховкой через фильтр по деньгам или типа того.
В алгоритмической торговле много аспектов и много чем можно заниматься для улучшения результата. Интересно, кто в каких пропорциях время распределяет.
Как алготрейдеру сразу, конечно, хочется факторы вычленить, закономерности построить, посмотреть как распределение времени на результаты влияет, эксперимент спроектировать и провести. Но тут так, конечно, не выйдет), но просто послушать всё равно очень интересно. Интересно не чем в моменте занимаешься, а на каком-то скользящем окне помасштабней понять как усилия распределяется. Основной фактор, думаю, тут стадия жизненного цикла трейдера, но и в пределах стадии всё равно разброс на основе индивидуальных предпочтений приличный.
Я долго в инфраструктуру усилия вкладывал, потом в рисёч стратегий, щас основной упор в мета-исследования – исследования, положительный результат в которых аффектит эффективность всего процесса и всех/большинства стратегий. Наверно, процентов 60 этим занимаюсь, 30 – рисёч и написание стратегий, 10 – инфраструктуру допиливаю по необходимости.
Инфраструктурно меня конкретно штормило раньше). Видимо, строить инфраструктуру (где-то в глубинах внутренних предпочтений) мне ничуть не менее интересно, чем рисёчить стратегии. Поштормило-поштормило, да подотпустило. Зато теперь у меня внутри нет никакой недосказанности вида «а что если своё попробовать написать», «а что если готовую вот эту специализированную взять» и прочих. Лучше жалеть о то, что сделал… и я делал)).
Сейчас самописная инфрастуктура. Не разраб, не кодер, не архитектор, но кой какие-то принципы усвоил – какие-то из своего опыта вынес, какие-то из курсов или ещё откуда. Соблюдение банальной IT гигиены на порядки облегчает жизнь. Пример: раньше мог запилить коннектор какой-нибудь, который корнями врастал в остальную часть инфраструктуры и чтобы заменить его на другой коннектор, если понадобится, приходится выкорчёвывать, а это долго, сложно и отличный повод запустить прокрастинационный цикл. А надо-то, банально, написать базовый класс и, много не надо, буквально несколькими с указанием сигнатур, дальше от этого класса наследоваться – всё.
Скачал с этих страниц списки американских акций
https://stockanalysis.com/list/nyse-stocks/
https://stockanalysis.com/list/nasdaq-stocks/
Запустил бэктестер, он последовательно проходит по бумагам — бэктестит одну, потом к следующей переходит и т.д., после каждой выводит результаты по бумаге и накопительные. Ну и я иногда поглядываю на процесс, смотрю нарисовались какие-то средние метрики после некоторого кол-во отбэктесченных бумаг, потом смотрю PF плюс минус стабильно стал падать и падать и падать, думаю ну кто его там этот рандом поймёт, но, подозрительно, в начале процесса бумаги выдавали стабильно 1.7-2.0 PF, а тут чёт всё больше вокруг 1.1-1.2 стали плясать и тоже подозрительно стабильно. В какой-то момент, смотрю, накопленные метрики начали расти опять, присмотрелся, средний бэктест опять ближе к 1.7-2.0. Ага, я положил список с NYSE тикерами, а справа прилепил Nasdaq и понимаю, что этот скачок был связан с переходом между биржами. Сомнений нет, это не просто рандом – пора идти смотреть, по какому принципу тикеры отсортированы, чувствую, не по алфавиту. Так и есть – по капитализации.